def generate_test_data():
    """生成测试数据"""
    test_cases = []
    
    # 基础测试用例
    test_cases.append(("AAB", 8))
    test_cases.append(("AAABBC", 188))
    test_cases.append(("V", 1))
    
    # 边界测试用例
    test_cases.append(("", 0))  # 空字符串
    test_cases.append(("A", 1))  # 单个字符
    test_cases.append(("AA", 2))  # 重复字符
    test_cases.append(("ABC", 15))  # 不同字符
    
    return test_cases

def generate_edge_cases():
    """生成边界测试用例"""
    edge_cases = [
        ("", 0),           # 空字符串
        ("A", 1),          # 单个字符
        ("AA", 2),         # 两个相同字符
        ("AAA", 3),        # 三个相同字符
        ("AB", 3),         # 两个不同字符
        ("ABC", 15),       # 三个不同字符
        ("ABCD", 64),      # 四个不同字符
        ("AABB", 10),      # 两对相同字符
        ("AAAB", 12),      # 三个相同字符加一个不同字符
    ]
    return edge_cases

def generate_large_test_cases():
    """生成大型测试用例"""
    large_cases = [
        ("ABCDEF", 1956),      # 六个不同字符
        ("AABBCC", 90),        # 三对相同字符
        ("AAAABBBB", 70),      # 四个A和四个B
        ("ABCDEFGH", 109600),  # 八个不同字符
        ("AAABBBCCC", 1660),   # 三组三个相同字符
    ]
    return large_cases

if __name__ == "__main__":
    print("生成测试数据...")
    
    # 基础测试用例
    basic_cases = generate_test_data()
    print(f"基础测试用例数量: {len(basic_cases)}")
    
    # 边界测试用例
    edge_cases = generate_edge_cases()
    print(f"边界测试用例数量: {len(edge_cases)}")
    
    # 大型测试用例
    large_cases = generate_large_test_cases()
    print(f"大型测试用例数量: {len(large_cases)}")
    
    # 合并所有测试用例
    all_cases = basic_cases + edge_cases + large_cases
    print(f"总测试用例数量: {len(all_cases)}")
    
    # 保存到文件
    with open("test_data.txt", "w", encoding="utf-8") as f:
        f.write("测试数据\n")
        f.write("=" * 50 + "\n\n")
        
        for i, (tiles, expected) in enumerate(all_cases):
            f.write(f"测试用例 {i+1}:\n")
            f.write(f"  输入: '{tiles}'\n")
            f.write(f"  期望输出: {expected}\n")
            f.write("\n")
    
    print("测试数据已保存到 test_data.txt") 